package com.xiaobai.common.utils.result;

import lombok.Getter;

@Getter
public enum ResultCode {
    SUCCESS(200, "成功"),//成功
    SUCCESS_CREATE_RESOURCE(201, "成功请求并创建了新的资源"), // 成功请求并创建了新的资源
    SUCCESS_ACCEPTED(202, "已经接受请求，但未处理完成"), // 已经接受请求，但未处理完成
    SUCCESS_Non_Authoritative_Information(203, "请求成功。但返回的meta信息不在原始的服务器，而是一个副本"), //请求成功。但返回的meta信息不在原始的服务器，而是一个副本
    SUCCESS_NO_CONTENT(204, "服务器成功处理，但未返回内容。在未更新网页的情况下，可确保浏览器继续显示当前文档"), //服务器成功处理，但未返回内容。在未更新网页的情况下，可确保浏览器继续显示当前文档
    SUCCESS_RESET_CONTENT(205, "服务器处理成功，用户终端（例如：浏览器）应重置文档视图。可通过此返回码清除浏览器的表单域"), //服务器处理成功，用户终端（例如：浏览器）应重置文档视图。可通过此返回码清除浏览器的表单域
    SUCCESS_PARTIAL_CONTENT(206, "服务器成功处理了部分GET请求"), //服务器成功处理了部分GET请求

    FAIL(400, "客户端请求语法有问题"),//客户端请求语法有问题
    UNAUTHORIZED(401, "未认证（签名错误）"),//未认证（签名错误）
    CODE_FAIL(402, "登录失败错误"),//登录失败错误
    FORBIDDEN(403, "权限不足"), // 权限不足
    NOT_FOUND(404, "接口不存在"),//接口不存在
    PARAMETER_NULL(40005, "请求参数为空"),//请求参数为空
    SAME_RESOURCES(40006, "包含相同资源"),//包含相同资源
    NOT_SEEK_RESOURCE(40007, "没有找到对应资源"),//没有找到对应资源
    PRECONDITION_FAILED(412, "客户端请求信息的先决条件错误"), //客户端请求信息的先决条件错误
    INTERNAL_SERVER_ERROR(500, "服务器内部错误"),//服务器内部错误
    /**
     * 前端表格id已存在
     */
    FRONT_TABLE_ID_UNIQUE_EXCEPTION(90013,"前端表格id已存在"),

    /**
     * 缺少必要参数异常
     */
    PARAM_MISS(100001, "I18N.GLOBAL.PARAM_MISS"),

    /**
     * 参数解析失败异常
     */
    PARAM_PARSE_ERR(100003, "I18N.GLOBAL.PARAM_PARSE_ERR"),

    /**
     * 类型强制转换异常
     */
    CLASS_CAST_EXCEPTION(100101, "I18N.GLOBAL.CLASS_CAST_EXCEPTION"),

    /**
     * Long类型为空异常
     */
    LONG_MISS(100103, "I18N.GLOBAL.LONG_MISS"),

    /**
     * 空指针异常
     */
    NULL_POINTER_EXCEPTION(100105, "I18N.GLOBAL.NULL_POINTER_EXCEPTION"),

    /**
     * 数组下标越界异常
     */
    INDEX_OUT_OF_BOUNDS_EXCEPTION(100107, "I18N.GLOBAL.INDEX_OUT_OF_BOUNDS_EXCEPTION"),

    /**
     * MyBatis异常
     */
    MYBATIS_EXCEPTION(100201,"I18N.GLOBAL.MYBATIS_EXCEPTION"),

    /**
     * 数据库死锁异常
     */
    DEADLOCK_LOSER_EXCEPTION(100203,"I18N.GLOBAL.DEADLOCK_LOSER_EXCEPTION"),

    /**
     * SQL处理异常
     */
    UNCATEGORIZED_SQL_EXCEPTION(100205,"I18N.GLOBAL.UNCATEGORIZED_SQL_EXCEPTION"),

    /**
     * 持久性异常，ORM持久层的错误
     */
    PERSISTENCE_EXCEPTION(100207,"I18N.GLOBAL.PERSISTENCE_EXCEPTION"),

    /**
     * SQL参数异常
     */
    BINDING_EXCEPTION(100209,"I18N.GLOBAL.BINDING_EXCEPTION"),

    /**
     * SQL语法错误
     */
    BAD_SQL_GRAMMAR_EXCEPTION(100211,"I18N.GLOBAL.BAD_SQL_GRAMMAR_EXCEPTION"),

    /**
     * 数据库非空字段未赋值异常
     */
    SQL_INTEGRITY_CONSTRAINT_VIOLATION_NULL_EXCEPTION(100213,"I18N.GLOBAL.SQL_INTEGRITY_CONSTRAINT_VIOLATION_NULL_EXCEPTION"),

    /**
     * 插入数据超过数据库最长限制
     */
    MYSQL_DATA_TRUNCATION(100215,"I18N.GLOBAL.MYSQL_DATA_TRUNCATION"),

    /**
     * 实体属性与数据库值的数据类型无法匹配
     */
    DATA_INTEGRITY_VIOLATION_EXCEPTION(100217,"I18N.GLOBAL.DATA_INTEGRITY_VIOLATION_EXCEPTION"),

    /**
     * 字段指代不明异常
     */
    SQL_INTEGRITY_CONSTRAINT_VIOLATION_EXCEPTION(100219,"I18N.GLOBAL.SQL_INTEGRITY_CONSTRAINT_VIOLATION_EXCEPTION"),

    /**
     * 未知异常错误信息
     */
    UNKNOWN_EXCEPTION(100099,"I18N.GLOBAL.UNKNOWN_EXCEPTION");
    ;
    private final Integer code;

    private final String mes;


    ResultCode(Integer code, String mes) {
        this.code = code;
        this.mes = mes;
    }

}
